package com.xdcplus.web.service.sys;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.dto.sys.SysDepartmentDTO;
import com.xdcplus.web.common.pojo.dto.sys.SysDepartmentFilterDTO;
import com.xdcplus.web.common.pojo.entity.sys.SysDepartment;
import com.xdcplus.web.common.pojo.vo.sys.SysDepartmentVO;

import java.util.List;


/**
 * 部门(SysDepartment)表服务接口层
 *
 * @author bullion.yan
 * @since 2024-06-18 14:00:40
 */
public interface SysDepartmentService extends BaseService<SysDepartment, SysDepartment, SysDepartmentVO> {

    /**
     * 添加部门(SysDepartment)
     *
     * @param sysDepartmentDTO 部门(SysDepartmentDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveSysDepartment(SysDepartmentDTO sysDepartmentDTO);

    /**
     * 修改部门(SysDepartment)
     *
     * @param sysDepartmentDTO 部门(SysDepartmentDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateSysDepartment(SysDepartmentDTO sysDepartmentDTO);

    /**
     * 批量保存或更新部门(SysDepartment)
     *
     * @param sysDepartmentList 部门(SysDepartmentList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<SysDepartment> sysDepartmentList);

    /**
     * 批量保存或更新部门(SysDepartmentDTOList)
     *
     * @param sysDepartmentDTOList 部门(SysDepartmentDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<SysDepartmentDTO> sysDepartmentDTOList);

    /**
     * 删除部门(SysDepartment)
     *
     * @param id 部门(SysDepartment)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteSysDepartmentLogical(Long id);
    
    Boolean deleteSysDepartmentByIds(String ids);

    /**
     * 查询部门(SysDepartment)
     *
     * @param sysDepartmentFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<SysDepartmentVO>} 状态信息
     */
    List<SysDepartmentVO> querySysDepartmentVOList(SysDepartmentFilterDTO sysDepartmentFilterDTO);

    /**
     * 查询部门(SysDepartment)
     *
     * @param sysDepartmentFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<SysDepartmentVO>} 状态信息
     */
    PageVO<SysDepartmentVO> querySysDepartment(SysDepartmentFilterDTO sysDepartmentFilterDTO);

    /**
     * 查询一个
     *
     * @param id 部门(SysDepartment)主键
     * @return {@link SysDepartmentVO} 部门(SysDepartment)信息
     */
    SysDepartmentVO querySysDepartmentById(Long id);

    SysDepartment querySysDepartmentByName(String name);
}
